package com.twb.system.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import com.twb.core.base.entity.TwbPageInfo;
import com.twb.core.base.service.IBaseService;
import com.twb.system.entity.twbDataDic.TwbDataDic;
import com.twb.system.entity.twbDataDic.dto.ListTwbDataTypeDto;
import com.twb.system.entity.twbDataDic.dto.SearchTwbDataDicDto;
import com.twb.system.entity.twbDataDic.vo.SaveTwbDataDicVo;
import com.twb.system.entity.twbDataDic.vo.SearchTwbDataDicVo;
import com.twb.system.entity.twbDataDic.vo.UpdateTwbDataDicByIdVo;

/**
 * @ClassName ITwbDataDicService
 * @Description 数据字典 service接口
 * 
 * @author DSY
 * @date 2020-11-05 12:54:33
 */
public interface ITwbDataDicService extends IBaseService<TwbDataDic> {

	/**
	 * @Title  searchTwbDataDic
	 * @Description 分页查询
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2020-07-27 15:33:39
	 */
	public TwbPageInfo<SearchTwbDataDicDto> searchTwbDataDic(SearchTwbDataDicVo vo);

	/**
	 * @Title  saveTwbDataDic
	 * @Description 保存信息
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2020-07-27 15:33:39
	 */
	public int saveTwbDataDic(SaveTwbDataDicVo vo);

	/**
	 * @Title  updateTwbDataDicById
	 * @Description 更新信息
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2020-07-27 15:33:39
	 */
	public int updateTwbDataDicById(UpdateTwbDataDicByIdVo vo);

	/**
	 * @Title  deleteTwbDataDicById
	 * @Description 删除信息
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2020-07-27 15:33:39
	 */
	public int deleteTwbDataDicById(String id);

	/**
	 * @Title  deleteTwbDataDicByIds
	 * @Description 批量删除信息
	 * @param ids
	 * @return
	 * @author DSY
	 * @date 2020-07-27 15:33:39
	 */
	public int deleteTwbDataDicByIds(String ids);

	/**
	 * @Title  exportExcel
	 * @Description 导出excel
	 * @param exportExcelVo
	 * @param searchVo
	 * @return
	 * @throws Exception
	 * @author DSY
	 * @date 2020-07-27 15:33:39
	 */
	public void exportExcel(SearchTwbDataDicVo searchVo, HttpServletResponse response) throws Exception;

	/**
	 * @Title  importExcel
	 * @Description 导入excel
	 * @param map
	 * @return
	 * @author DSY
	 * @date 2020-07-27 15:33:39
	 */
	public int importExcel(Map<String, String> map);

	/**
	 * @Title initRedisDataDic
	 * @Description 缓存数据字典到redis
	 * @return
	 * @author DSY
	 * @date 2020年7月27日 下午3:51:32
	 */
	boolean initRedisDataDic();

	/**
	 * @Title getDataNameMap
	 * @Description 获取缓存的字典名称集合
	 * @return
	 * @author DSY
	 * @date 2020年7月27日 下午3:54:05
	 */
//	Map<String, String> getDataNameMap();

	/**
	 * @Title getDataValueMap
	 * @Description 获取缓存的字典值集合
	 * @return
	 * @author DSY
	 * @date 2020年7月27日 下午3:54:27
	 */
//	Map<String, String> getDataValueMap();

	/**
	 * @Title getDataDicMap
	 * @Description 获取缓存的字典集合
	 * @return
	 * @author DSY
	 * @date 2020年7月27日 下午3:54:44
	 */
	Map<String, List<TwbDataDic>> getDataDicMap();

	/**
	 * @Title listTwbDataType
	 * @Description 字典类别查询
	 * @param typeCode
	 * @param typeName
	 * @param queryWord
	 * @return
	 * @author DSY
	 * @date 2020年7月27日 下午7:22:20
	 */
	List<ListTwbDataTypeDto> listTwbDataType(String typeCode, String typeName, String queryWord, String parentId);

	/**
	 * @Title getMaxSeqNumByTypeCode
	 * @Description 获取最大顺序号
	 * @param typeCode
	 * @param isParent 是否使用父级ID查询
	 * @return
	 * @author DSY
	 * @date 2020年8月26日 下午12:46:30
	 */
	public Integer getMaxSeqNumByTypeCode(String typeCode, String isParent);

	/**
	 * @Title searchTwbDataDicTree
	 * @Description 字典树查询
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2020年11月5日 下午2:58:59
	 */
	List<SearchTwbDataDicDto> searchTwbDataDicTree(SearchTwbDataDicVo vo);

	/**
	 * @Title updateParentIdByTypeCode
	 * @Description 更新类别层级信息
	 * @param typeCode
	 * @param parentId
	 * @return
	 * @author DSY
	 * @date 2020年11月16日 上午10:37:33
	 */
	int updateParentIdByTypeCode(String typeCode, String parentId);
}
